存储器(三)之随机存储器

随机存储器

随机存储器根据 存储信息的原理不同,分为静态随机存储器和动态随机存储器。

静态RAM

静态RAM基本单元电路

存储器中用于寄存 “0” 和 “1”代码的电路称为存储器的基本单元电路。如下图所示,图中T1 ~ T4是一个由MOS管组成的触发器基本电路,T5、T6受行地址选择信号控制,只要有高电压进来,该开关就会被打开(连通,否则就阻断)。T7和T8是列选择器,列选择器是共有的,不包含在基本单元电路内,而是芯片同一列的各个基本单元电路所共有的。

假设触发器内已经保存有 “1”这个信息,即A点为高电平。当需读出时,只要使行、列地址选择信号均有效,使T5、T6、T7、T8均导通,A点高电平通过T6,再由位线A通过T8作为读出放大器的输入信号,在读选择有效时,将1信号输出。

由于静态RAM是用触发器工作原理存储信息,因此即使信息读出后,它仍保持其原状态,不需要再生。但电源掉电时,原存信息丢失,故属于易失性半导体存储器。

静态RAM存储结构

当要写入“1”时,数据从DIN进入写电路,通过写左边的写放大器,向T7输入低电压;经过右边的写放大器,向T8输入高电压。选中的那行及那列就会导通(即T1~T6被导通),A点就是高电压,A’点就是低电压。这样就把欲写入的信息写到了该基本单元电路中。

静态RAM举例

2144芯片由6个MOS管组成,如图所示A9 ~ A0 为地址输入端;I/O1 ~ I/O4为数据输入/输出端;CS- 为片选信号(低电平有效);WE-为写允许信号(低电平为写,高电平为读);Vcc为电源端;GND为接地端。

2144芯片外特性

下图为2144芯片结构的说明图,A3~A8作为行地址选择先,共有2^6条。而因为I/O线有4条,所以每次读/写都应该产生四个数据,所以列选择器也会有四个。

2144芯片结构

举个例子,如果现在要向某个单元格进行写入,先通过行地址线和列地址线选择出具体的单元格。如下图所示

地址单元选择示意图

找到对应的地址单元后,如果做读操作,先使CS-为低电平(被选中),然后WE-为高电平(执行写操作),然后在四个I/O口输出数据。如果做写操作,先将数据送到四个I/O口处,并使CS-为低电平、WE-为高电平,这样输入数据就会被写入到指定单元格内。

静态RAM读时序

  1. WE-的低电平信号长期有效
  2. 在tA - tCO的时间内,必须发出片选信号
  3. 在tCO的时间内,经过tcx时间(注意tcx不能超过tCO),必须发出数据,并在t片选信号失效前保证数据稳定
  4. 在片选信号失效后,tOTD - tOHA这段时间里,数据仍有效。
  5. 在地址、片选信号均失效后,在OHA时间里数据仍有效

注意,第四项、第五项都表明了,即使当片选信号、地址失效后,数据也不是立马就消失的

读时序

静态RAM写时序

注意:

  1. 这里的滞后时间,是因为上一个操作结束后留下来的。为了避免无效数据的写入,所以需要等待一段时间。
  2. tWR > tDH是为了有充足的时间进行写入

写时序

总结

在静态RAM的每个读写周期内,地址都是有效的。

动态RAM

三管MOS动态RAM

读过程

  1. 对T4进行预充电,T4被打开,使读数据线的电压达到VDD
  2. 读选择线打开T2
  3. 如果电容Cg里有电容(即存储的数据为“1”时),T1被打开
  4. 因为T2 和 T1 被接通,导地,读数据线变为低电平,输出0

3管MOS读过程

写过程

  1. 写选择线打开T3
  2. 写数据经过写数据线,Cg就能保存一个电平

3管MOS写过程

单管MOS动态RAM

读过程

  1. 字线传来高电平,使T导通
  2. 如果Cs内包含数据,则向数据线输出

写过程

  1. 字线传来低电平,使T导通
  2. 若数据线内为高电平,经T管对Cs进行充电

三管MOS动态RAM举例

这是1K x 1位的存储芯片,每一个小方块都代表一个三管MOS基本电路。
由于三管MOS读选择线和写选择先不是通过一条线的一个高低电平就能决定的(需要两条线各控制读/写)。
所以行地址译码器比5条多一条,每一行都会占用读、写两条选择线。

三管MOS动态RAM

读出时预充电信号,只有在行、列选择器共同作用下的基本单元电路才能将信息从D输出。

写入时,受行地址译码器选中一行,受列地址译码器选中一列,从D获取信息写入到,行、列选择器共同作用的基本电路单元格中。

单管动态RAM举例

单管动态RAM4116芯片

该存储器自带了一个小的控制器(顶部的长方形):

  • RAS-表示行选通信号
  • CAS-表示列选通信号
  • WE-表示写/读信号

它们对应的输出行时钟、列时钟、写时钟。

本来4116芯片是16K x 1位的(即2^7 x 2^7),但由于4116的外特性,它只能拥有7个管脚。所以写入行地址时,需要传7位,暂存到行地址缓冲器中;写入列地址时,传七位到列地址缓冲器中。

比如说行地址输入:0111111(6个1,即64),列地址输入0000000(7个0,即0):

  1. 确定行地址63,打开63行的MOS管;确定列地址0,打开0列的MOS管
  2. 假设电容Cs里存有数据“1”,那么在读放大器左边就是“1”;反之则是“0”
  3. “1”即高电压,经过读放大器后,会往右输出“0”即低电压。
  4. 由于一路的MOS管都已经打开,就理所当然的进入I/O缓冲器内
  5. 最后输出

4116读信号

比如说行地址输入:0000000(7个0,即0),列地址输入0000000(7个0,即0)。其写流程如下所示:

  1. 确定行地址0,打开第0行的MOS管;确定列地址0,打开0列的MOS管。
  2. 输入的信息只能通过已打开的电路
  3. 经过读放大器后进入相反的一侧,例如存入数据“1”,则从右往左经过读放大器的时候会变成“0”,信息就写入到电容里了。

4116写信号

注意,由于经过读放大器都会进入相反的状态,所以存“1”(实际存“0”),取出来时(实际取“0”),经过读放大器成为取“1”。

动态RAM刷新

刷新的实质是刷新放大器将原信息读出,再由刷新放大器形成原信息再写入的过程。
上面的4116芯片里的读放大器、三管MOS动态RAM里的刷新放大器都是起到刷新的作用。

由于存储单元被访问是随机的,无法确定哪些存储单元会被访问,所以需要隔一段时间就对全部的基本单元电路进行刷新,一般取2ms。这个时间称刷新周期,又称再生周期。

刷新是 一行行进行的,由专用的刷新电路来完成对基本单元电路的逐行刷新,才能保证动态RAM内的信息不丢失。

1) 集中刷新
集中刷新是指 每行数据的刷新时间集中在一段时间内刷新。如图所示,假设对于128 x 128的矩阵来说,读/写周期为0.5us,刷新时间需要2us。2ms(刷新周期内)内会占4000个存取周期,而在这4000个周期里,3872个周期用来读/写;128个周期用来刷新。

这128个周期(占64us)被称为“死时间”,又称“死区”,所占比率为 128 / 4000 * 100% = 3.2%。在死时间内,CPU无法访问存储器。

集中刷新

2) 分散刷新
分散刷新是指 每行存储单元在存储时都进行一次刷新。如图所示,假设对于128 x 128的矩阵来说,读/写一次所花费的时间为(0.5us + 0.5us),128us就刷新一次完所有行。而要求只需要在2000us内刷新,所以在电容失效之前的这段时间里总共刷新15.625次,极其浪费资源。

分散刷新

3) 异步刷新
异步刷新是指 前两种方式的结合,在一段时间内进行刷新。该方法相比集中式刷新,解决了死区范围过大的问题;相比分散刷新,将每行刷新的时间控制在最大限度内。
如图所示
每一次完整的刷新需要在2ms内,总共128行,所以每隔(2000 / 128) us 要刷新一行

异步刷新

如果动态RAM的刷新安排在CPU对指令的译码阶段,由于这个阶段CPU不访问存储器,所以不会出现集中刷新里面的“大量死区”的问题。

总结

条目 动态RAM 静态RAM
速度 慢(体现在电容上)
价格 便宜
集成度
功耗